"""
单例设计模式
"""
import logging.handlers
import conftest

class GetLogger():
    logger=None

    @classmethod
    def get_logger(cls):
        if cls.logger is None:
            #添加日志器
            cls.logger=logging.getLogger()
            #设置日志级别
            cls.logger.setLevel(logging.INFO)
            #设置处理器
            #控制台处理器
            sh=logging.StreamHandler()
            #文件处理器
            filename=conftest.BASE_DIR+'/log/tpshopUITest.log'
            err_filename=conftest.BASE_DIR+'/log/tpshopUITest_error.log'
            fh=logging.handlers.TimedRotatingFileHandler(filename=filename,
                                                         when="midnight",
                                                         interval=1,
                                                         backupCount=30,
                                                         encoding="utf-8")
            #只记录错误日志处理器
            fh_error = logging.handlers.TimedRotatingFileHandler(filename=err_filename,
                                                           when="midnight",
                                                           interval=1,
                                                           backupCount=30,
                                                           encoding="utf-8")
            #设置格式化器
            # 日志格式（时间、级别、日志器名称、模块名称、打印日志的函数名称、代码行数、日志消息的详细内
            fmt="%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d] - %(message)s"
            fomatter=logging.Formatter(fmt)
            #格式化器添加到处理器中
            sh.setFormatter(fomatter)
            fh.setFormatter(fomatter)
            fh_error.setFormatter(fomatter)
            # 错误日志记录处理器的级别设置为logging.ERROR，则只会记录error级别日志
            fh_error.setLevel(logging.ERROR)
            #处理器添加到日志器中
            cls.logger.addHandler(sh)
            cls.logger.addHandler(fh)
            cls.logger.addHandler(fh_error)
        return cls.logger


#调试
if __name__ == '__main__':
    log=GetLogger().get_logger()
    print(log)
    #log.setLevel(logging.WARNING)
    log.info("info日志")
    log.error('err日志')

